More and more computing applications are being migrated to the cloud environment. Some large-scale provider networks support dozens of multi-tenant cloud-based services serving thousands of clients distributed around the world. These types of services often rely upon the use of virtualization technologies, such as virtualized compute servers, virtual storage devices, and virtual networks of various kinds. Depending on the type of virtualization techniques being used, a single underlying resource (such as a host or server) may often support multiple logical or virtualized resource instances potentially serving the needs of multiple clients concurrently.
Clients are typically billed for their use of such services in two ways: flat fees based, for example, on enabling a service to begin with, or on reserving some set of resources, and usage-based fees. Determining the up-front or flat fee that a given client is to be billed for obtaining access to a particular service, or for reserving a resource instance, is usually straightforward. Determining the usage-based fees for a given service, on the other hand, may require a non-trivial amount of metering and tracking. For example, a particular service may involve the use of compute cycles (e.g., CPU usage at various virtualized compute servers), storage space (e.g., some amount of persistent storage at various storage servers), as well as network bandwidth (e.g., associated with data transfers performed directly or indirectly at client request and/or commands issued on behalf of the client). The usage of each of these types of resources impacts the expenses incurred by the provider network operator implementing the services, leading to the requirement for usage-based fees. Accounting for clients' resource consumption accurately and fairly may itself consume resources of the provider network, however, and as a result, tradeoffs between the overhead associated with metering and billing and the granularity at which resource usage details are captured may have to be considered for various resource types.
Achieving accurate and yet efficient metering may be even more of a problem for network bandwidth usage than for other types of resources. For some types of services, it may be relatively easy to identify the “ownership” (i.e., billing responsibility) for a certain data transfer over the network, for example because a given object transfer may be initiated as a result of an invocation of a particular type of application programming interface (API) defined for the service, which can be traced to the client that invoked the API. However, for other types of services, such as a service that implements virtual compute servers, it may not be so easy to track data transfers—e.g., after a particular virtual compute server is instantiated, the client may run various network-utilizing applications on the server, into which the provider network operator has little or no direct visibility. The complexity of assigning ownership for network traffic for a given service may increase further due to various factors: e.g., because multiple clients' traffic (potentially associated with any of several services) may be directed to or from a single physical server, because any given unit of network traffic may potentially be associated with multiple services (e.g., one service at the sending end and a different service at the receiving end), and/or because the network topology may change over time.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.